feat: prepare Rockets for 1.0 preview - #33
Closed
leoafarias wants to merge 7 commits into
Closed
Conversation
13 tasks
Member
Author
|
Closing this broad PR in favor of a focused draft stack:
The final tree at #35 is byte-for-byte identical to this PR's head. The rebuilt stack also passed the full |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Rockets promises a definition-first path from domain resources and auth integrations to a working Nest application. The 1.0-readiness review found package-boundary, authentication, repository, and release gaps that made the published surface less reliable than that promise.
This PR makes the runtime behavior and release evidence match the intended model: integrations carry what they own, request context survives every local CQRS/repository hop, local Firestore behavior matches the supported emulator contract, and the release gate proves both packages and runnable examples.
What changed
Definition-first composition
createServer(definition)as the canonical Nest entry-module facade.defineAuthAdapter(Adapter, options?)for custom auth integrations./meand its default CQRS handlers.defineTypeOrmRepositoryto the TypeORM adapter package and remove duplicated server/sample helpers.Authentication and request context
RecoveryServicetoken. This keeps upstream public policy/port contracts while fixing sequencing, context propagation, and awaited side effects without patchingnode_modules.POST /recovery/passcodeand a request-body DTO; the former GET path is intentionally gone.falsepassword-history result before any credential write.AppContextHostAPI and propagate context through local commands, queries, ports, OTP services, guards, JWT resolution, invitations, and background listeners.Firestore parity
null, exclude cross-type range comparisons, and support structural equality for arrays, plain maps, bytes, dates, and SDK values exposingisEqual.path-to-regexpresolution because it forced Firebase CLI's Express 4 dependency onto an incompatible v8 API; package-specific dependency resolution now selects the correct versions.Release and documentation readiness
.mts, use explicit.mtsimports, and prove they load through Vitest's native config loader without the prior warning.release:check; run the native-config assertion in the Node 22 coverage job because Node 20 cannot execute.mtsfiles through Vitest's native loader.@concepta/nestjs-commonat8.0.0-alpha.6: registry verification showed that is still its latest published v8 build, while the other available v8 modules are pinned to8.0.0-alpha.8.Failures reproduced and closed
falsedid not stop credential creation; the new regression test failed before the guard and passes now.path-to-regexpoverride supplied an Express-incompatible API; removing that override made the real emulator contract pass.Intentional breaking refinements
defineTypeOrmRepositoryfrom@concepta/rockets-repository-typeorm, not@concepta/rocketsor its removed/typeormsubpath.defineFirebaseAuth(...);forRootAsyncremains nested.POST /recovery/passcodewith{ passcode }, replacing the GET route that exposed the passcode in the URL.createRepositoryContext/RepositoryContextInterfacesurface is removed.No package version bump is included; versioning remains an independent review decision.
Verification
corepack yarn install --immutablecorepack yarn release:checkrelease-checkpassed, and the Node 22 build/coverage job passed with the native.mtsloader assertion.This remains one broad PR because composition, auth, repository semantics, packaging, examples, and docs are coupled parts of the same 1.0 contract and are now guarded together.